package com.demo.easyExcel.fillTemplateColor;

import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.ss.util.CellUtil;

import java.util.HashMap;
import java.util.List;

//处理不同模板不同的处理器  处理模板
public class ExportAllFileCellColorHandler2 implements CellWriteHandler {
    /**
     * map
     * key：第i行
     * value：第i行中单元格索引集合
     */
    private HashMap<Integer, List<Integer>> map;

    /**
     * 无参构造
     */
    public ExportAllFileCellColorHandler2() {

    }

    /**
     * 有参构造
     */
    public ExportAllFileCellColorHandler2(HashMap<Integer, List<Integer>> map, Short colorIndex) {
        this.map = map;
        this.colorIndex = colorIndex;
    }

    /**
     * 颜色 算是一个全局的颜色
     * TODO：
     * 可以通过这个对其他构造器做全局处理。都按照这个格式来
     */
    private Short colorIndex;

    /**
     * 会遍历每一个单元格，一个格子遍历一下，然后设置颜色   不用这个了，不好。  差点意思
     */
    @Override
    public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
        int x = cell.getColumnIndex();
        int y = cell.getRowIndex();
        //不处理第一行
        System.out.println(x + "," + y + "  -  " + cell.getStringCellValue());
        if (y > 0) {
            if (x == 2 && y == 2) {
                System.out.println(111);

                CellStyle cellStyle = writeSheetHolder.getSheet().getWorkbook().createCellStyle();
//                TODO: 克隆的话 这儿是最重要的，克隆的时候要克隆之前的， x和y 要选好，设置一个。就可以得到，否则  ！可能！  没有这一列原本的样式。然后的话就该怎么设置就怎么设置。
                cellStyle.cloneStyleFrom(writeSheetHolder.getCachedSheet().getRow(2).getCell(x).getCellStyle());
                //设置背景颜色
                cellStyle.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE1.getIndex());
                //设置模式
                cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//                设置底部边框
//                cellStyle.setBorderBottom(BorderStyle.THIN);
//                设置单元格的对齐方式
//                cellStyle.setAlignment(HorizontalAlignment.CENTER);
                writeSheetHolder.getCachedSheet().getRow(y).createCell(x);

                Cell tempCell = writeSheetHolder.getCachedSheet().getRow(y).getCell(x);
                tempCell.setCellValue(cell.getStringCellValue());
                tempCell.setCellStyle(cellStyle);

            }
        }
    }
}
